home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Amiga Plus 1997 #3
/
Amiga Plus CD - 1997 - No. 03.iso
/
pd
/
programmierung
/
alienbreed3d2_src
/
cheesesauce
/
aliencontrol.demo
< prev
next >
Wrap
Text File
|
1997-01-31
|
8KB
|
505 lines
gotgun: dc.w 0
ItsABigNasty
move.l #40*256,StepUpVal
move.l #40*256,thingheight
st gotgun
tst.w 12(a0)
bge.s .stillalive
.notthisone:
rts
.stillalive:
tst.b numlives(a0)
bgt.s .notdying
move.b #0,numlives(a0)
; move.w 8(a0),d0
; cmp.w #256*16,d0
; bge .onfloordead
; add.w #256,8(a0)
; bra .notthisone
;
.onfloordead:
move.b #-1,16(a0)
rts
.notdying:
move.l #21*256*65536,deadframe
move.l #21*256*65536,8(a0)
move.w #8,screamsound
move.w #70,nasheight
bra WanderOrAttack
**************************************
ItsANasty:
move.l #40*256,StepUpVal
move.l #40*256,thingheight
clr.b gotgun
tst.w 12(a0)
bge.s .stillalive
.notthisone:
rts
.stillalive:
tst.b numlives(a0)
bgt.s .notdying
move.b #0,numlives(a0)
move.w 8(a0),d0
cmp.w #256*16,d0
bge .onfloordead
add.w #256,8(a0)
bra .notthisone
.onfloordead:
move.b #-1,16(a0)
rts
.notdying:
move.l alframe,8(a0)
move.l #12*256*65536,deadframe
move.w #0,screamsound
move.w #50,nasheight
bra WanderOrAttack
WanderOrAttack
; Don't use control points, just
; wander at random
move.w 12(a0),d2
blt .thisonedead
tst.b 17(a0)
beq.s .cantseeplayer
tst.w ObjTimer(a0)
bgt.s .cantseeplayer
jsr GetRand
and.w #255,d0
cmp.w #250,d0
bgt.s .cantseeplayer
bra Solo_Attack
.cantseeplayer
move.l #ZoneAdds,a5
move.l (a5,d2.w*4),objroom
move.w TempFrames,d0
sub.w d0,ObjTimer(a0)
bgt.s .nonewdir
tst.b 17(a0)
beq.s .keepwandering
bra Solo_Attack
.keepwandering
jsr GetRand
and.w #8190,d0
move.w d0,Facing(a0)
jsr GetRand
and.w #15,d0
add.w #20,d0
move.w d0,ObjTimer(a0)
.nonewdir
move.w (a0),d1
move.l #ObjectPoints,a1
lea (a1,d1.w*8),a1
move.w (a1),oldx
move.w 4(a1),oldz
move.w maxspd(a0),d2
muls TempFrames,d2
move.w d2,speed
move.w #20,Range
move.w 4(a0),d0
ext.l d0
asl.l #7,d0
move.l d0,newy
movem.l d0/a0/a1/a3/a4/d7,-(a7)
clr.b canshove
move.w Facing(a0),d0
jsr GoInDirection
move.w #%1000000000,wallflags
Jsr MoveObject
movem.l (a7)+,d0/a0/a1/a3/a4/d7
tst.b hitwall
beq.s .nochangedir
move.w #-1,ObjTimer(a0)
.nochangedir:
move.l objroom,a2
move.w (a2),12(a0)
move.w newx,(a1)
move.w newz,4(a1)
move.w 10(a2),2(a0)
move.l 2(a2),d0
asr.l #7,d0
sub.w nasheight,d0
move.w d0,4(a0)
move.b damagetaken(a0),d2
beq .noscream
sub.b d2,numlives(a0)
bgt.s .notdeadyet
movem.l d0-d7/a0-a6,-(a7)
sub.l #ObjectPoints,a1
add.l #ObjRotated,a1
move.l (a1),Noisex
move.w #200,Noisevol
move.w screamsound,Samplenum
move.b #1,chanpick
clr.b notifplaying
st backbeat
jsr MakeSomeNoise
movem.l (a7)+,d0-d7/a0-a6
move.l deadframe,8(a0)
rts
.notdeadyet:
clr.b damagetaken(a0)
movem.l d0-d7/a0-a6,-(a7)
sub.l #ObjectPoints,a1
add.l #ObjRotated,a1
move.l (a1),Noisex
move.w #200,Noisevol
move.w screamsound,Samplenum
move.b #1,chanpick
clr.b notifplaying
st backbeat
jsr MakeSomeNoise
movem.l (a7)+,d0-d7/a0-a6
.noscream
move.l PLR1_Roompt,ToRoom
move.l objroom,FromRoom
move.w newx,oldx
move.w newz,oldz
move.w PLR1_xoff,newx
move.w PLR1_zoff,newz
jsr CanItBeSeen
tst.b CanSee
beq .carryonprowling
move.b #1,17(a0)
.carryonprowling:
.thisonedead:
rts
Solo_Attack:
move.l #ZoneAdds,a5
move.l (a5,d2.w*4),objroom
move.w PLR1_xoff,newx
move.w PLR1_zoff,newz
move.w (a0),d1
move.l #ObjRotated,a6
move.l #ObjectPoints,a1
lea (a1,d1.w*8),a1
lea (a6,d1.w*8),a6
move.w (a1),oldx
move.w 4(a1),oldz
move.w maxspd(a0),d2
muls.w TempFrames,d2
move.w d2,speed
move.w #50,Range
move.w 4(a0),d0
ext.l d0
asl.l #7,d0
move.l d0,newy
movem.l d0/a0/a1/a3/a4/d7,-(a7)
clr.b canshove
clr.b GotThere
jsr HeadTowards
move.w #%1000000000,wallflags
Jsr MoveObject
movem.l (a7)+,d0/a0/a1/a3/a4/d7
move.l objroom,a2
move.w (a2),12(a0)
move.w 12(a2),CurrCPt(a0)
move.w newx,(a1)
move.w newz,4(a1)
move.w 10(a2),2(a0)
move.l 2(a2),d0
asr.l #7,d0
sub.w nasheight,d0
move.w d0,4(a0)
move.b damagetaken(a0),d2
beq .noscream
sub.b d2,numlives(a0)
bgt.s .notdeadyet
movem.l d0-d7/a0-a6,-(a7)
move.l (a6),Noisex
move.w #200,Noisevol
move.w screamsound,Samplenum
move.b #1,chanpick
clr.b notifplaying
st backbeat
jsr MakeSomeNoise
movem.l (a7)+,d0-d7/a0-a6
move.l deadframe,8(a0)
rts
.notdeadyet:
clr.b damagetaken(a0)
movem.l d0-d7/a0-a6,-(a7)
move.l (a6),Noisex
move.w #200,Noisevol
move.w screamsound,Samplenum
move.b #1,chanpick
clr.b notifplaying
st backbeat
jsr MakeSomeNoise
movem.l (a7)+,d0-d7/a0-a6
bra .cantshoot
.noscream:
tst.b gotgun
beq .cantshoot
tst.w SecTimer(a0)
blt.s .canshoot
move.w TempFrames,d0
sub.w d0,SecTimer(a0)
bra .cantshoot
.canshoot:
move.l #PlayerShotData,a5
move.w #19,d1
.findonefree
move.w 12(a5),d0
blt.s .foundonefree
adda.w #64,a5
dbra d1,.findonefree
bra .cantshoot
.foundonefree:
move.l (a6),Noisex
move.w #200,Noisevol
move.w #9,Samplenum
move.b #1,chanpick
clr.b notifplaying
st shotsize(a5)
move.b #10,shotpower(a5)
movem.l a5/a1/a0,-(a7)
jsr MakeSomeNoise
movem.l (a7)+,a5/a1/a0
move.l #ObjectPoints,a2
move.w (a5),d1
lea (a2,d1.w*8),a2
move.w (a1),oldx
move.w 4(a1),oldz
move.w PLR1_xoff,newx
move.w PLR1_zoff,newz
move.w #16,speed
move.w #0,Range
movem.l a5/a0,-(a7)
jsr HeadTowards
movem.l (a7)+,a5/a0
move.w newx,d0
move.w d0,(a2)
sub.w oldx,d0
move.w d0,shotxvel(a5)
move.w newz,d0
move.w d0,4(a2)
sub.w oldz,d0
move.w d0,shotzvel(a5)
move.l #%00100000,EnemyFlags(a5)
move.w 12(a0),12(a5)
move.w 4(a0),d0
add.w #6,d0
move.w d0,4(a5)
ext.l d0
asl.l #7,d0
move.l d0,accypos(a5)
move.l PLR1_yoff,d1
sub.l d0,d1
move.w distaway,d0
asr.w #4,d0
bgt.s .okokokok
moveq #1,d0
.okokokok
divs d0,d1
move.w d1,shotyvel(a5)
jsr GetRand
and.w #7,d0
add.w #50,d0
move.w d0,SecTimer(a0)
.cantshoot:
tst.b GotThere
beq.s .noteatyou
move.w #1,chanpick
move.w (a6),Noisex
move.w 2(a6),Noisez
move.w #50,Noisevol
move.w #2,Samplenum
st notifplaying
move.l a0,-(a7)
jsr MakeSomeNoise
move.l (a7)+,a0
move.l #Cheese,FacesPtr
move.w #3,Cheese
move.w #-1,FacesCounter
move.w TempFrames,d0
sub.w d0,Energy
bra .carryonattack
.noteatyou:
move.l PLR1_Roompt,ToRoom
move.l objroom,FromRoom
move.w newx,oldx
move.w newz,oldz
move.w PLR1_xoff,newx
move.w PLR1_zoff,newz
jsr CanItBeSeen
tst.b CanSee
bne .carryonattack
move.b #0,17(a0)
.carryonattack:
.thisonedead
rts
deadframe: dc.l 0
screamsound: dc.w 0
nasheight: dc.w 0
Prowl_a:
; Head towards a control point, and
; once there, pick another one at
; random and go all the way there
; instead.
move.w 12(a0),d2
blt .thisonedead
move.l #ZoneAdds,a5
move.l (a5,d2.w*4),objroom
move.w CurrCPt(a0),d0
move.w TargCPt(a0),d1
jsr GetNextCPt
; d0 contains nearest CPt to go for.
move.l #CPtPos,a5
move.w (a5,d0.w*4),newx
move.w 2(a5,d0.w*4),newz
move.l alframe,8(a0)
move.w (a0),d1
move.l #ObjectPoints,a1
lea (a1,d1.w*8),a1
move.w (a1),oldx
move.w 4(a1),oldz
move.w maxspd(a0),d2
muls TempFrames,d2
move.w d2,speed
move.w #20,Range
movem.l d0/a0/a1/a3/a4/d7,-(a7)
clr.b canshove
jsr HeadTowards
move.w #%1000000000,wallflags
Jsr MoveObject
movem.l (a7)+,d0/a0/a1/a3/a4/d7
move.l objroom,a2
move.w (a2),12(a0)
move.w newx,(a1)
move.w newz,4(a1)
tst.b GotThere
beq.s .notatnextptyet
move.w d0,CurrCPt(a0)
cmp.w TargCPt(a0),d0
bne.s .notatnextptyet
move.w nextCPt,d0
move.w d0,TargCPt(a0)
add.w #1,d0
cmp.w NumCPts,d0
blt.s .stillsomemore
move.w #0,d0
.stillsomemore:
move.w d0,nextCPt
.notatnextptyet:
move.w 10(a2),2(a0)
move.l 2(a2),d0
sub.l #6400,d0
asr.l #7,d0
move.w d0,4(a0)
move.l PLR1_Roompt,ToRoom
move.l objroom,FromRoom
move.w newx,oldx
move.w newz,oldz
move.w PLR1_xoff,newx
move.w PLR1_zoff,newz
jsr CanItBeSeen
tst.b CanSee
beq .carryonprowling
move.b #1,17(a0)
.carryonprowling:
.thisonedead:
rts